package simulator;


import inputOutput.Serialisation;
import inputOutput.SerialisationBinaire;

import java.io.IOException;
import java.util.List;
import java.util.Scanner;

import reservation.Reservation;


import ecole.infrastructure.Batiment;
import ecole.infrastructure.Creation_Batiments;
import ecole.organisation.Ecole;
import ecole.organisation.Enseignement;
import ecole.organisation.Formation;
import ecole.utilisateur.*;

public class Main {

	public static void main(String[] args) {

		Creation_Batiments cb = new Creation_Batiments();
		Batiment.listeBatiment = cb.create();
		
		Ecole ec = new Ecole("Montpellier");
		Professeur p1 = new Professeur("Stromboni", "JP", 'M');
		Professeur p2 = new Professeur("Peyrrat", "Claudine", 'F');
		Professeur p3 = new Professeur("Derry", "Anne-Marie", 'F');
		
		Etudiant e1 = new Etudiant("Marley", "Bob", 'M');
		Etudiant e2 = new Etudiant("Bolt", "Usain", 'M');
		Etudiant e3 = new Etudiant("Depardieu", "Gerard", 'M');
		
		Formation f = new Formation("SI", 3, p1);
		Formation f1 = new Formation("MAM", 3, p2);
		Formation f2 = new Formation("SI", 4, p3);

		Enseignement en1 = new Enseignement("IPA", p1, "Introduction à Java", 5);
		Enseignement en2 = new Enseignement("Maths Discretes", p2, "Algorithme des ordinateurs", 5);
		Enseignement en3 = new Enseignement("Langage C", p1, "Introduction au langage C", 5);
		
		//affiche ecole
		System.out.println(ec);
		//Ajoute un professeur à l'école
		ec.ajouterProfesseur(p1);
		ec.ajouterProfesseur(p2);
		ec.ajouterProfesseur(p3);
		
		//affiche tous les professeurs de l'école
		System.out.println(ec.getListeProfesseur());
		
		// assigner des formations à l'ecole
		ec.ajouterFormation(f);
		ec.ajouterFormation(f1);
		ec.ajouterFormation(f2);

		// ajoute un étudiant à une formation et donc à un groupe
		ec.ajouterEtudiant(e1, f);
		ec.ajouterEtudiant(e2, f);
		ec.ajouterEtudiant(e3, f);
		
		//affiche tous les groupe d'une formation.
		System.out.println(f.getListeGroupeTD());
		
		//affiche toutes les formation d'une ecole.
		System.out.println(ec.getListeFormation());
		
		//ajoute un eseignement à une formation
		ec.ajouterEnseignement(en1, f);
		ec.ajouterEnseignement(en2, f);
		ec.ajouterEnseignement(en3, f);
		
		Serialisation serial = new SerialisationBinaire();
		try {
			serial.sauvegarder(ec);
		} catch (IOException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		
//		Ecole ec;
		try {
//			ec = serial.chargerEcole();
//			System.out.println(ec.getListeFormation());
			
		// affiche la liste des enseignements d'une formation
//		System.out.println(f.getListeEnseignement());
		Reservation reservation= new Reservation();
		List<Reservation> listeRes = serial.chargerReservation();
		reservation.setListeReservation(listeRes);
		
		System.out.println("********* Bonjour et bienvenue ! **********");
		System.out.println("Si vous etes professeur responsable d'un enseignement, tapez 1.");
		System.out.println("Si vous etes professeur responsable d'une formation, tapez 2.");
		System.out.println("Si vous souhaitez consulter l'emploi du temps, tapez 3.");
		Scanner sc = new Scanner(System.in);
		int choix = 0;
		choix = sc.nextInt();
		if( choix == 1 )
		{
			InterfaceRE i2 = new InterfaceRE(ec);
			i2.affichage();
		}
		else if ( choix == 2 )
		{
			InterfaceRF i3 = new InterfaceRF(ec);
			i3.affichage();
		}
		else if ( choix == 3 )
		{
			InterfaceHtml iHtml= new InterfaceHtml();
			iHtml.menu();
		}
		else
			System.out.println("Veuillez saisir 1, 2 ou 3 !");
	
		
	} catch (IOException e) {
		// TODO Auto-generated catch block
		e.printStackTrace();
	}

}
}